// Standard Library:
#include <stdio.h>
#include <stdlib.h>

float parse_float(char* s)
{
	float result;
	if (sscanf(s, "%f", &result) != 1)
	{
		fprintf(stderr, "Fehler: Der eingegebene Wert '%s' ist keine Zahl\n", s);
		exit(EXIT_FAILURE);
	}
	return result;
}

int is_valid(float e1, float e2, float e3)
{
	return (e1 + e2) > e3 && (e1 + e3) > e2 && (e2 + e3) > e1;
}

int is_equilateral(float e1, float e2, float e3)
{
	return e1 == e2 && e2 == e3;
}

int is_right(float e1, float e2, float e3)
{
	if (e1 > e2 && e1 > e3)
	{
		return e2 * e2 + e3 * e3 == e1 * e1;
	}
	else if (e2 > e1 && e2 > e3)
	{
		return e1 * e1 + e3 * e3 == e2 * e2;
	}
	else
	{
		return e1 * e1 + e2 * e2 == e3 * e3;
	}
}

int is_isosceles(float e1, float e2, float e3)
{
	return e1 == e2 || e1 == e3 || e2 == e3;
}

int main(int argc, char** argv)
{
	// Read input.
	if (argc != 4)
	{
		fprintf(stderr, "%s <Seite1> <Seite2> <Seite3>\n", argv[0]);
		return EXIT_FAILURE;
	}
	float edge1 = parse_float(argv[1]), edge2 = parse_float(argv[2]), edge3 = parse_float(argv[3]);

	// Check if the triangle is valid.
	if (!is_valid(edge1, edge2, edge3))
	{
		puts("Das Dreieck ist ungueltig");
		return EXIT_SUCCESS;
	}

	// Check if the triangle is equilateral.
	if (is_equilateral(edge1, edge2, edge3))
	{
		puts("Das Dreieck ist gleichseitig");
		return EXIT_SUCCESS;
	}
	int is_other = 1;

	// Check if the triangle is right.
	if (is_right(edge1, edge2, edge3))
	{
		puts("Das Dreieck ist rechtwinklig");
		is_other = 0;
	}

	// Check if the triangle is isosceles.
	if (is_isosceles(edge1, edge2, edge3))
	{
		puts("Das Dreieck ist gleichschenkling");
		is_other = 0;
	}

	if (is_other)
		puts("Das Dreieck ist andersartig");

	return EXIT_SUCCESS;
}

